package xl.com.service;

import org.springframework.stereotype.Service;

import java.util.Map;
import java.util.stream.Collectors;


// 步骤4：增强RAG服务
@Service
public class RAGService {
    // 添加订单相关FAQ
    private static final Map<String, String> ORDER_KNOWLEDGE = Map.of(
            "退货流程", """
            我们的退货流程分为以下步骤：
            1. 在订单详情提交退货申请
            2. 等待商家审核（1-3个工作日）
            3. 审核通过后寄回商品
            4. 商家确认收货后完成退款
            详细状态可通过订单号查询具体进度""",
            "物流查询", "您可以使用订单中的包裹ID在物流查询页面跟踪最新状态",
            "退款时效", "退款通常会在商家确认后的3-5个工作日内退回原支付账户"
    );
    // 实际项目应使用向量数据库
    private Map<String, String> knowledgeBase = initKnowledgeBase();

    public String retrieveRelevantData(String query) {
        // 简化版文本相似度匹配（生产环境应使用嵌入向量）
        return knowledgeBase.entrySet().stream()
                .filter(e -> e.getKey().contains(query))
                .map(Map.Entry::getValue)
                .limit(3)
                .collect(Collectors.joining("\n"));
    }

    private Map<String, String> initKnowledgeBase() {
        // 加载业务数据到内存
        return Map.of(
                "退货政策", "我们的退货期限为30天...",
                "产品规格", "旗舰型号支持5G网络...",
                "支付方式", "支持支付宝、微信支付..."
        );
    }
    public String retrieveOrderInfo(String query) {
        // 组合静态知识和动态数据提示
        String staticInfo = ORDER_KNOWLEDGE.entrySet().stream()
                .filter(e -> query.contains(e.getKey()))
                .map(Map.Entry::getValue)
                .collect(Collectors.joining("\n\n"));

        return staticInfo + "\n\n如需查询具体订单，可以提供订单号或使用以下功能：\n"+"order";
    }
}
